//
//  LinearList.c
//  Learn_C_Cpp
//
//  Created by jinbang.li on 2023/6/12.
//

#include "LinearList.h"
#include <stdlib.h>
/**
 线性表的四个唯一
 1.有且仅有一个第一元素
 2.有且仅有一个尾元素
 3.除第一个元素外，每一个元素都有自己的前驱
 4.除最后一个元素外，每一个元素都有自己的后继
 */
Seq_list *SL_Create(int max){
    Seq_list* list = (Seq_list*)malloc(sizeof(Seq_list)*max);
   
    if (list == NULL) {
        printf("malloc failed");
        return NULL;
    }
    list->max = max;
    list->len = 0;
    return list;
}

void SL_Free(Seq_list *list){
    if (list) {
        free(list);
    }
}

void SL_MakeEmpty(Seq_list *list){
    if (list) {
        list->len = 0;
    }
}

int SL_Length(Seq_list *list){
    if (list) {
        return list->len;
    }
    return -1;
}

int SL_IsEmpty(Seq_list *list){
    return list->len == 0?0:1;
}

int SL_IsFull(Seq_list *list){
    return (list->len == list->max)?0:1;
}

T SL_GetAt(Seq_list *list,int i){
    if (list) {
        int len = list->len;
        for (int index = 0; index < len; index++) {
            if (i == index) {
                return list->data[index];
            }
        }
    }
    return -1;
}
